package estacion.persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;

import estacion.dominio.Persona;
import estacion.dominio.Revisor;
import estacion.dominio.Trabajador;

public class FPRevisor {

	public static void insertRevisor(Revisor rev) throws Exception {
		
		String SQL="Insert into persona(DNI, nombre,apellido1, apellido2, contrasena, num_cuenta_corriente,horas_trabajadas,turno,horas_seguidas,email,rol,tipo_vehiculo,Dinero_revisor) " +
				"values('"+rev.getDNI()+"','"+rev.getNombre()+"','"+rev.getApellido1()+"','"+rev.getApellido2()+"', '"+rev.getContrasena()+"'" +
				" ,"+rev.getNum_cuenta_corriente()+","+rev.getHoras_trabajadas()+",'"+rev.getTurno()+"',"+rev.getHoras_seguidas()+", '"+rev.getEmail()+"', 'Revisor', " +
				"'"+rev.getTipo_vehiculo()+"',"+rev.getDinero_revisor()+")";
			
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			p.executeUpdate();
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
	}

	//Elmina una Persona dado el dni
	public static void deleteRevisor(String dni) throws Exception {
		String SQL="Delete from persona where DNI=? and rol='Revisor'";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			p.setString(1, dni);
			p.executeUpdate();
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}	
	}
	
	public static Revisor consultaRevisor(String dni) throws Exception {
		Revisor rev=null;
		String SQL="Select * from persona where DNI='"+dni+"' and rol='Revisor'";
		
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			ResultSet r=p.executeQuery();
			while (r.next()) {
				rev=new Revisor();
				rev.setDNI(r.getString("DNI"));
				rev.setNombre(r.getString("nombre"));
				rev.setApellido1(r.getString("apellido1"));
				rev.setApellido2(r.getString("apellido2"));
				rev.setNum_cuenta_corriente(r.getInt("num_cuenta_corriente"));
				rev.setContrasena(r.getString("contrasena"));
				rev.setEmail(r.getString("email"));
				rev.setRol(r.getString("rol"));
				rev.setHoras_trabajadas(r.getInt("horas_trabajadas"));
				rev.setHoras_seguidas(r.getInt("horas_seguidas"));
				rev.setTurno(r.getString("turno"));
				rev.setTipo_vehiculo(r.getString("tipo_vehiculo"));
				rev.setDinero_revisor(r.getDouble("Dinero_revisor"));
			}			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
		return rev;
	}
	
	public static Revisor consultaOcupado(String vehiculo) throws Exception {
		Revisor rev=null;
		String SQL="Select * from persona where tipo_vehiculo='"+vehiculo+"' and rol='Revisor'";
		
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			ResultSet r=p.executeQuery();
			while (r.next()) {
				rev=new Revisor();
				rev.setDNI(r.getString("DNI"));
			}			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
		return rev;
	}
	
	public static void modificarRevisor(Revisor rev, String dni) throws Exception{
		
		String SQL="UPDATE persona SET nombre='"+rev.getNombre()+"', apellido1='"+rev.getApellido1()+"', contrasena='"+rev.getContrasena()+"',apellido2='"+rev.getApellido2()+"'" +
					", num_cuenta_corriente="+rev.getNum_cuenta_corriente()+", email='"+rev.getEmail()+"'," +
					"horas_trabajadas="+rev.getHoras_trabajadas()+", horas_seguidas="+rev.getHoras_seguidas()+", turno='"+rev.getTurno()+"', " +
					"tipo_vehiculo='"+rev.getTipo_vehiculo()+"', Dinero_revisor="+rev.getDinero_revisor()+
					"where DNI='"+dni+"' and rol='Revisor'";
				
		
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement update=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			update=bd.prepareStatement(SQL);
			update.executeUpdate();

			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
	}
	
	public static Vector<Persona> getRevisores() throws Exception {
		Vector<Persona> result=new Vector<Persona>();
		String SQL="Select * from persona where rol='Revisor'";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			ResultSet r=p.executeQuery();
			while (r.next()) {
				Revisor rev=new Revisor();
				rev.setDNI(r.getString("DNI"));
				rev.setNombre(r.getString("nombre"));
				rev.setApellido1(r.getString("apellido1"));
				rev.setApellido2(r.getString("apellido2"));
				rev.setNum_cuenta_corriente(r.getInt("num_cuenta_corriente"));
				rev.setContrasena(r.getString("contrasena"));
				rev.setEmail(r.getString("email"));
				rev.setRol(r.getString("rol"));
				rev.setHoras_trabajadas(r.getInt("horas_trabajadas"));
				rev.setHoras_seguidas(r.getInt("horas_seguidas"));
				rev.setTurno(r.getString("turno"));
				rev.setTipo_vehiculo(r.getString("tipo_vehiculo"));
				rev.setDinero_revisor(r.getDouble("Dinero_revisor"));
				result.add(rev);
			}			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
		return result;
	}
}
